package org.alps.demo.test.leetcode;

import java.util.Stack;

/**
 * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
 *
 * @date 2021-05-22
 * @author zkw
 */
public class Solution {
    /**
     * https://blog.csdn.net/tt75281920/article/details/107280425/
     * 思路：使用栈（先进后出）来解：
     * 当匹配"( , [ , {“时，往栈内push对应的”) , ] , }"；
     * 当匹配到") , ] , }"时，跟栈pop出来的数据对比是否一致
     * @param s
     * @return
     */
    public static boolean isValid(String s) {
        Stack<Character> stack = new Stack<Character>();
        for (char c : s.toCharArray()) {
            if (c == '(') {
                stack.push(')');
            } else if (c == '{') {
                stack.push('}');
            } else if (c == '[') {
                stack.push(']');
            } else if (c != stack.pop()) {
                return false;
            }
        }
        return stack.isEmpty();
    }

    public static void main(String[] args) {
        System.out.println(isValid("(){}[)"));
    }
}
